Chrome 137

Data de lançamento da versão estável:27 de maio de 2025

A menos que indicado de outra forma, as mudanças a seguir se aplicam à versão do canal estável do Chrome 137 para Android, ChromeOS, Linux, macOS e Windows.

CSS e interface

Função if() do CSS

A função if() do CSS oferece uma maneira concisa de expressar valores condicionais. Ele aceita uma série de pares de condição-valor, delimitados por ponto e vírgula. A função avalia cada condição sequencialmente e retorna o valor associado à primeira condição verdadeira. Se nenhuma das condições for avaliada como verdadeira, a função vai retornar um stream de token vazio. Isso permite expressar uma lógica condicional complexa de maneira simples e concisa.

Exemplo:

div {
  color: var(--color);
  background-color: if(style(--color: white): black; else: white);
}

.dark {
  --color: black;
}

.light {
  --color: white;
}
<div class="dark">dark</div>
<div class="light">light</div>

Rastreamento do bug #346977961 | Entrada do ChromeStatus.com | Especificação

Propriedades CSS reading-flow, reading-order

A propriedade CSS reading-flow controla a ordem em que os elementos em um layout flexível, de grade ou de bloco são expostos a ferramentas de acessibilidade e focados usando a navegação de foco do teclado de guia.

A propriedade CSS reading-order permite que os autores substituam manualmente a ordem em um contêiner de fluxo de leitura. É um número inteiro com valor padrão de 0.

Saiba mais sobre essas propriedades em Usar o fluxo de leitura do CSS para navegação lógica sequencial de foco e teste alguns exemplos.

Rastreamento do bug #40932006 | Entrada do ChromeStatus.com | Especificação

Ignorar o espaçamento entre letras em scripts cursivos

Esse recurso adiciona lógica para ignorar a configuração de espaçamento entre letras para scripts cursivos, conforme especificado pelo desenvolvedor, de acordo com a especificação, para garantir que o espaçamento entre letras não atrapalhe a estrutura da palavra e visa produzir uma melhor experiência para os usuários que usam scripts cursivos.

Com esse recurso, o Chrome garante que os scripts cursivos sejam legíveis e espaçados corretamente, mesmo que as fontes não tenham recursos tipográficos avançados.

Os scripts a que isso se aplica no Chromium são árabe, Hanifi Rohingya, Mandaic, Mongolian, N'Ko, Phags Pa e siríaco, já que esses scripts são considerados cursivos de acordo com a especificação.

Rastreamento do bug #40618336 | Entrada do ChromeStatus.com | Especificação

API Selection getComposedRanges e direction

Esse recurso inclui dois novos métodos para a API Selection:

  • Selection.direction, que retorna a direção da seleção como none, forward ou backward.
  • Selection.getComposedRanges(), que retorna uma lista de 0 ou 1 composto StaticRange

Uma StaticRange composta pode cruzar limites de sombra, o que uma Range normal não pode.

Exemplo:

const range = getSelection().getComposedRanges({ shadowRoots: [root] });

Se a seleção cruzar um limite de raiz de sombra que não for fornecido na lista shadowRoots, os endpoints do StaticRange serão redefinidos para ficarem fora dessa árvore. Isso garante que o Chrome não exponha árvores de sombra desconhecidas.

Rastreamento do bug #40286116 | Entrada do ChromeStatus.com | Especificação

Ajude offset-path: shape()

Suporte a offset-path: shape(), para permitir o uso de formas responsivas para definir o caminho de animação.

Rastreamento do bug #389713717 | Entrada do ChromeStatus.com | Especificação

Suporte ao atributo transform em SVGSVGElement

Esse recurso permite a aplicação de propriedades de transformação, como dimensionamento, rotação, translação e inclinação, diretamente ao elemento raiz <svg> usando o atributo transform. Essa melhoria permite manipular todo o sistema de coordenadas SVG ou o conteúdo como um todo, oferecendo maior flexibilidade na criação de gráficos vetoriais dinâmicos, responsivos e interativos. Com o suporte a esse atributo, o elemento <svg> pode ser transformado sem exigir elementos de wrapper adicionais ou soluções alternativas de CSS complexas, simplificando o processo de criação de gráficos da Web escalonáveis e animados.

Rastreamento do bug #40313130 | Entrada do ChromeStatus.com | Especificação

Cor de destaque do sistema para a propriedade accent-color

Isso permite que você use a cor de destaque do sistema operacional para elementos de formulário. Ao usar a propriedade CSS accent-color, você pode garantir que elementos de formulário, como caixas de seleção, botões de opção e barras de progresso, adotem automaticamente a cor de destaque definida pelo sistema operacional do usuário. Esse recurso é compatível com o macOS desde 2021 e agora também é compatível com o Windows e o ChromeOS.

Rastreamento do bug #40764875 | Entrada do ChromeStatus.com | Especificação

Permitir que <use> faça referência ao elemento raiz de um documento externo omitindo o fragmento.

Esse recurso simplifica o elemento <use> do SVG, liberando os requisitos de referência. Antes do Chrome 137, era necessário fazer referência explícita a fragmentos no documento SVG. Se nenhum ID de fragmento for fornecido, <use> não vai conseguir resolver o destino, e nada será renderizado ou referenciado.

Por exemplo: um elemento <use> que faz referência a um arquivo externo com identificador de fragmento:

<svg>
  <use xlink:href="myshape.svg#icon"></use>
</svg>

Neste exemplo, #icon é o identificador de fragmento que aponta para um elemento com id="icon" dentro de myshape.svg.

Sem um identificador de fragmento:

<svg>
  <use xlink:href="myshape.svg"></use>
</svg>

Com esse recurso, omitir fragmentos ou apenas fornecer o nome do arquivo svg externo faz referência automática ao elemento raiz, eliminando a necessidade de alterar o documento referenciado apenas para atribuir um ID à raiz. Essa melhoria simplifica o processo de edição manual e melhora a eficiência.

Rastreamento do bug #40362369 | Entrada do ChromeStatus.com | Especificação

Tipos de cores de ponto flutuante da tela

Introduz a capacidade de usar formatos de pixel de ponto flutuante (em vez de ponto fixo de 8 bits) com CanvasRenderingContext2D, OffscreenCanvasRenderingContext2D e ImageData.

Isso é necessário para aplicativos de alta precisão (por exemplo, visualização médica), conteúdo de alto alcance dinâmico e espaços de cores de trabalho lineares.

Rastreamento do bug #40245602 | Entrada do ChromeStatus.com | Especificação

view-transition-name: match-element

O valor match-element gera um ID exclusivo com base na identidade do elemento e renomeia o mesmo para esse elemento. Isso é usado em casos de apps de página única em que o elemento está sendo movido e você quer animá-lo com uma transição de visualização.

Rastreamento do bug #365997248 | Entrada do ChromeStatus.com | Especificação

Pagamentos

Alinhamento do tipo de erro gerado para a criação de credenciais do payment WebAuthn: SecurityError se torna NotAllowedError.

Correção do tipo de erro gerado durante a criação de credenciais do WebAuthn para credenciais payment. Devido a uma incompatibilidade histórica de especificação, a criação de uma credencial payment em um iframe de origem cruzada sem uma ativação do usuário gerava uma SecurityError em vez de uma NotAllowedError, que é o que é gerado para credenciais não de pagamento.

Essa é uma mudança interruptiva, embora específica. O código que detectava o tipo de erro gerado (por exemplo, e instanceof SecurityError) é afetado. O código que geralmente processa erros durante a criação de credenciais (por exemplo, catch (e)) continuará funcionando corretamente.

Rastreamento do bug #41484826 | Entrada do ChromeStatus.com | Especificação

APIs Web

Particionamento de URL de blobs: busca/navegação

Como continuação do particionamento de armazenamento, o Chrome implementou o particionamento do acesso ao URL do blob por chave de armazenamento (site de nível superior, origem do frame e o booleano has-cross-site-ancestor), com exceção das navegações de nível superior que vão permanecer particionadas apenas pela origem do frame. Esse comportamento é semelhante ao implementado atualmente pelo Firefox e pelo Safari e alinha o uso do URL do blob com o esquema de particionamento usado por outras APIs de armazenamento como parte do particionamento de armazenamento. Além disso, o Chrome agora aplica o noopener em navegações de alto nível iniciadas pelo renderizador para URLs blob em que o site correspondente é de um domínio diferente em relação ao site de nível superior que realiza a navegação. Isso alinha o Chrome a um comportamento semelhante no Safari, e as especificações relevantes foram atualizadas para refletir essas mudanças.

Rastreamento do bug #40057646 | Entrada do ChromeStatus.com

Pilhas de chamadas em relatórios de erros de páginas da Web que não respondem

Esse recurso captura a pilha de chamadas do JavaScript quando uma página da Web para de responder devido a um código JavaScript que executa um loop infinito ou outra computação muito longa. Isso ajuda os desenvolvedores a identificar a causa da falta de resposta e corrigi-la com mais facilidade. A pilha de chamadas do JavaScript é incluída na API de relatórios de falhas quando o motivo não responde.

Rastreamento do bug #1445539 | Entrada do ChromeStatus.com | Especificação

Document-Isolation-Policy

Document-Isolation-Policy permite que um documento ative o crossOriginIsolation para si mesmo, sem precisar implantar o COOP ou o COEP, e independentemente do status crossOriginIsolation da página. A política é apoiada pelo isolamento de processos. Além disso, os subrecursos de origem cruzada do documento que não são CORS serão carregados sem credenciais ou precisarão ter um cabeçalho CORP.

Rastreamento do bug #333029146 | Entrada do ChromeStatus.com | Especificação

Ed25519 na criptografia da Web

Esse recurso adiciona suporte a algoritmos Curve25519 na API Web Cryptography, ou seja, o algoritmo de assinatura Ed25519.

Rastreamento do bug #1370697 | Entrada do ChromeStatus.com | Especificação

Prevenção de rastreamento do HSTS

Reduz o rastreamento de usuários por terceiros usando o cache HSTS.

Esse recurso só permite upgrades HSTS para navegações de nível superior e bloqueia upgrades HSTS para solicitações de subrecursos. Isso torna inviável que sites de terceiros usem o cache HSTS para rastrear usuários na Web.

Rastreamento do bug 40725781 | Entrada do ChromeStatus.com

WebAssembly

Integração de promessas do JavaScript

A integração de promessas do JavaScript (JSPI) é uma API que permite que os aplicativos do WebAssembly sejam integrados às promessas do JavaScript.

Ele permite que um programa da WebAssembly atue como o gerador de uma promessa e permite que o programa da WebAssembly interaja com APIs que têm promessas.

Especificamente, quando um aplicativo usa a JSPI para chamar uma API (JavaScript) que contém promessas, o código do WebAssembly é suspenso. Além disso, o autor da chamada original para o programa do WebAssembly recebe uma promessa que será cumprida quando o programa do WebAssembly for concluído.

Entrada do ChromeStatus.com | Especificação

Dicas de ramificação do WebAssembly

Melhora a performance do código compilado do WebAssembly informando ao mecanismo que uma instrução de ramificação específica tem uma probabilidade muito alta de seguir um caminho específico.

Isso permite que o mecanismo tome decisões melhores para o layout do código (melhorando a instrução de cache de instruções) e a alocação de registro.

Entrada do ChromeStatus.com | Especificação

WebGPU

GPUTextureView para vinculação de externalTexture

Agora é possível usar uma GPUTextureView para uma vinculação externalTexture ao criar uma GPUBindGroup.

Rastreamento do bug #398752857 | Entrada do ChromeStatus.com | Especificação

Sobrecarga de copyBufferToBuffer

O método copyBufferToBuffer() GPUCommandEncoder agora inclui uma maneira mais simples de copiar buffers inteiros usando uma nova sobrecarga com deslocamentos e parâmetros de tamanho opcionais.

Entrada do ChromeStatus.com | Especificação

Enterprise

Geração de registros e relatórios de endereços IP

O Chrome Enterprise está aprimorando os recursos de monitoramento de segurança e resposta a incidentes coletando e informando endereços IP locais e remotos e enviando esses endereços aos registros de investigação de segurança (SIT, na sigla em inglês). Além disso, o Chrome Enterprise permite que os administradores enviem os endereços IP para provedores de SIEM próprios e de terceiros usando o conector de relatórios do Chrome Enterprise.

Essa opção está disponível para clientes do Chrome Enterprise Core.

Entrada do ChromeStatus.com

Testes de origem

Atributo de bloqueio de renderização de frame rate

Adiciona um novo token de bloqueio de renderização full-frame-rate aos atributos de bloqueio. Quando o renderizador é bloqueado com o token full-frame-rate, ele funciona com uma taxa de frames mais baixa para reservar mais recursos para o carregamento.

Rastreamento do bug #397832388 | Entrada do ChromeStatus.com

Pausar a reprodução de mídia em iframes não renderizados

Adiciona uma política de permissão media-playback-while-not-rendered para permitir que os sites de inserção pausem a reprodução de mídia de iframes incorporados que não são renderizados, ou seja, que têm a propriedade display definida como none. Isso permite que os desenvolvedores criem experiências mais fáceis de usar e também melhorem o desempenho, permitindo que o navegador gerencie a reprodução de conteúdo que não é visível para os usuários.

Teste de origem | Rastreamento do bug #351354996 | Entrada do ChromeStatus.com

API Rewriter

A API Rewriter transforma e reformula o texto de entrada das maneiras solicitadas, com o suporte de um modelo de linguagem de IA no dispositivo. Os desenvolvedores podem usar essa API para remover redundâncias em um texto para se adequar a um limite de palavras, reformular mensagens para se adequar ao público-alvo ou ser mais construtivo se uma mensagem usar linguagem tóxica, reformulando uma postagem ou artigo para usar palavras e conceitos mais simples e muito mais.

Teste de origem | Bug de rastreamento #358214322 | Entrada do ChromeStatus.com | Especificação

API Writer

A API Writer pode ser usada para escrever novos materiais com base em uma tarefa de escrita, com o suporte de um modelo de linguagem de IA no dispositivo. Os desenvolvedores poderão usar essa API para gerar explicações textuais de dados estruturados, criando uma postagem sobre um produto com base em avaliações ou na descrição do produto, expandindo listas de prós e contras em visualizações completas e muito mais.

Teste de origem | Rastreamento de bugs #357967382 | Entrada do ChromeStatus.com | Especificação